Functions with a long parameter list are difficult to use because maintainers must figure out the role of each parameter and keep track of their
position.
function setCoordinates(var x1, var y1, var z1, var x2, var y2, var z2) { // Noncompliant
// ...
}
The solution can be to:
- Split the function into smaller ones
// Each function does a part of what the original setCoordinates function was doing, so confusion risks are lower
void setOrigin(var x, var y, var z) {
// ...
}
void setSize(var width, var height, var depth) {
// ...
}
- Find a better data structure for the parameters that group data in a way that makes sense for the specific application domain
struct Point { // In geometry, Point is a logical structure to group data
var x;
var y;
var z;
};
function setCoordinates(var p1, var p2) {
// ...
}
This rule raises an issue when a function has more parameters than the provided threshold.